package com.baturu.vin.hyundai.service.impl;

import com.baturu.carvin.service.CarTypeService;
import com.baturu.vin.dto.CarTypeBuilderDTO;
import com.baturu.vin.hyundai.dto.*;
import com.baturu.vin.service.EPCVinCacheService;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;

@Slf4j
@Service
public class HyundaiKiaOldCarAnalyser {

//    @Autowired
//    private EPCVinCacheService epcVinCacheService;
//
//    @Autowired
//    private KiaCarTypeBtrIdDAO kiaCarTypeBtrIdDAO;
//
//    @Autowired
//    private HyundaiKiaCarModelDAO hyundaiKiaCarModelDAO;
//
//    @Autowired
//    private CarEngineDAO carEngineDAO;
//
//    @Autowired
//    private CarGearBoxDAO carGearBoxDAO;
//
//    @Autowired
//    private CarTypeService carTypeService;

//    String getKiaCarTypeBtrId(HyundaiKiaVehicleDTO vehicleDTO) {
//        String preVinCode = StringUtils.substring(vehicleDTO.getVinCode(), 0, 1);
//
//        String model = vehicleDTO.getModel();
//
//        List<String> specialAllDescJson = vehicleDTO.getMajorAttributeJson();
//        String body = specialAllDescJson.get(2);
//        String engine = specialAllDescJson.get(3);
//        String engineLevel = specialAllDescJson.get(4);
//        String gearbox = specialAllDescJson.get(6);
//
//        KiaCarTypeBtrIdDTO kiaCarTypeBtrIdDTO = kiaCarTypeBtrIdDAO.findCarTypeBtrId(preVinCode, StringUtils.substring(vehicleDTO.getMakeDate(), 0, 4), model, body, engine, engineLevel, gearbox);
//        if (kiaCarTypeBtrIdDTO == null) {
//            return buildCarType(vehicleDTO);
//        }
//        return kiaCarTypeBtrIdDTO.getBtrId();
//    }

//    private String buildCarType(HyundaiKiaVehicleDTO analyseResult){
//        String makeDate = analyseResult.getMakeDate();
//        String year = StringUtils.substring(makeDate, 0, 4);
//        HyundaiKiaCarModelOldEntity carModel = hyundaiKiaCarModelDAO.findCarModelByBpnoOld(analyseResult.getBpno(), Integer.parseInt(year));
//        if(Objects.isNull(carModel)){
//            return "";
//        }
//
//        List<HyundaiAttributeEntity> majorAttributes = analyseResult.getMajorAttributeJson();
//        Map<String, String> attributeMapper = majorAttributes.stream()
//                .collect(Collectors.toMap(HyundaiAttributeEntity::getType, HyundaiAttributeEntity::getDescribe));
//        String body = attributeMapper.get("01");
//        String engine = attributeMapper.get("02");
//        String gearbox = attributeMapper.get("05");
//
//        handleSpecialCarSystem(body, carModel);
//        int carSystemId = carModel.getCarSystemId();
//        if(carSystemId == 0){
//            return "";
//        }
//        StringBuilder btrId = new StringBuilder("HYEPC");
//
//        if(StringUtils.isBlank(engine)){
//            return "";
//        }
//        btrId.append("_").append(engine);
//        CarEngineDTO carEngineDTO = carEngineDAO.findCarEngine(engine);
//        if(Objects.isNull(carEngineDTO)){
//            return "";
//        }
//        if(StringUtils.isBlank(gearbox)){
//            return "";
//        }
//        btrId.append("_").append(gearbox);
//        CarGearBoxDTO carGearBoxDTO = carGearBoxDAO.findCarGearBox(gearbox);
//        if(Objects.isNull(carGearBoxDTO)){
//            return "";
//        }
//        btrId.append("_").append(year);
//        saveCarType(btrId.toString(), carModel, carEngineDTO, carGearBoxDTO);
//        return btrId.toString();
//    }
//
//    private void saveCarType(String btrId, HyundaiKiaCarModelOldEntity carModel, CarEngineDTO carEngineDTO , CarGearBoxDTO carGearBoxDTO) {
//        if (StringUtils.isBlank(btrId)) {
//            return;
//        }
//        List<com.baturu.carvin.dtos.CarTypeDTO> carTypeDTOs = carTypeService.findCarTypeByBtrIds(Lists.newArrayList(btrId));
//        if (CollectionUtils.isNotEmpty(carTypeDTOs)) {
//            return;
//        }
//        int carSystemId = carModel.getCarSystemId();
//        CarTypeBuilderDTO carTypeBuilderDTO = CarTypeBuilderDTO
//                .builder()
//                .btrId(btrId)
//                .btrBrand(carModel.getBrand())
//                .btrSubBrand(carModel.getSubBrand())
//                .carSystemId(carSystemId)
//                .salesName(carEngineDTO.getDisplacement() + " " + carGearBoxDTO.getGearBoxType() + carGearBoxDTO.getDriveType())
//                .chassis(carModel.getBpno())
//                .displacement(carEngineDTO.getDisplacement())
//                .carSystem(carModel.getCarSystem())
//                .productTime(carModel.getMakeYear() + "")
//                .engineType(carEngineDTO.getEngine())
//                .transmissionType(carGearBoxDTO.getGearBoxType())
//                .transmissionDesc(carGearBoxDTO.getGearBoxType() + " " + carGearBoxDTO.getDriveType())
//                .build();
//        List<CarTypeBuilderDTO> carTypeBuilderDTOs = Lists.newArrayList(carTypeBuilderDTO);
//        epcVinCacheService.saveNewCarType(carTypeBuilderDTOs);
//    }
//
//    private void handleSpecialCarSystem(String body, HyundaiKiaCarModelOldEntity carModel) {
//
//        if (!"VERNA 10(CHINA PLANT-CHN)".equals(carModel.getModel())) {
//            return;
//        }
//        String carSystem = carModel.getCarSystem();
//        if (StringUtils.isBlank(carSystem)) {
//            return;
//        }
//        String[] cs = StringUtils.split("//");
//        for (String c : cs) {
//            if(StringUtils.contains(c, "4DR") && StringUtils.contains(body, "4DR")){
//                carModel.setCarSystem(c);
//                break;
//            }
//            if(StringUtils.contains(c, "5DR") && StringUtils.contains(body, "5DR")){
//                carModel.setCarSystem(c);
//                break;
//            }
//        }
//    }
}